零知识证明技术的应用
本文简单介绍零知识证明在区块链领域的主要应用,并以 Aleo 和 Scroll两个新星项目进行说明。
什么是零知识证明
零知识证明(Zero-Knowledge Proof,ZKP)是现代密码学的重要组成部分。它指的是证明者在不向验证者提供任何有用信息的情况下,说服验证者某个假设是正确的能力。
零知识证明本质上是一个涉及两个或多个参与方的协议,即两个或多个参与方需要完成一项任务的一系列步骤。证明者向验证者证明并使验证者相信他/她知道或拥有某个特定消息,但在证明过程中不会透露关于被证明消息的任何信息给验证者。通俗来说,证明者不仅能够证明自己想要证明的内容,而且同时向验证者披露“零”信息。
关于零知识证明的更多概念,已经有很多中文资料进行了介绍,这里就不赘述了。
零知识证明在区块链领域的主要应用
零知识证明技术的两个重要特点是其在区块链领域应用的主要因素:
零知识证明可以保护数据的隐私并证明其有效性,而不泄露数据信息。
零知识证明可以通过生成少量的证明来证明大量的数据,这在压缩数据量和提高性能方面具有重要作用。
因此,零知识证明的两个方向就是:隐私保护和区块链的扩展。下面分别叙述:
隐私保护一直是区块链中一个极其重要的概念,代表了在分布式网络中保护交易和参与者的能力。
区块链一直倡导匿名性,参与者在大多数交易中无需使用真实姓名,而可以重复使用公钥哈希值作为交易标识符来识别交易者。但是,这些交易只有伪名,而不是真正实现了匿名性。默认情况下,用户的每笔交易都是公开的,一旦用户的地址被锁定,就可以用来审查资金来源、计算持仓位置,甚至分析用户的链上活动。
零知识证明技术可以通过提交证明来确认交易的有效性,而不泄露任何信息,实现交易信息的完全匿名化。在强调隐私问题加密的发展阶段,许多开发者致力于隐私公链的探索。零知识证明的隐私保护和数据压缩能力是成为公链组件技术的主要原因。在此期间,像Zcash和Monero这样的项目取得了异常出色的成果。以Zcash为例,Zcash最初采用了Pinocchio协议,于2019年切换到Groth16证明系统。
Zcash钱包地址分为隐藏地址和透明地址。透明地址之间的交易与比特币(BTC)交易没有区别:发送方、接收方和交易金额都是公开可见的;隐藏地址之间的交易也会出现在公共区块链上,但交易的地址、资金金额和备注字段是加密的,并且zk-SNARK将根据网络共识规则证明交易的有效性;此外,还可以在隐藏地址和透明地址之间进行交易。
Zcash对审计和监管友好,同时保护交易隐私。隐藏地址交易的发送方和接收方可以向第三方披露交易详细信息,以满足见证、合规或审计需求。
“不可能三角”是以太坊等L1区块链面临的永恒问题。不同的链始终在去中心化、安全性和可扩展性之间找到平衡。
以太坊更注重去中心化和安全性,因此必须面对可扩展性的限制。以太坊上的高燃气费和长交易确认时间严重影响了用户体验。因此,其核心开发团队和社区一直在探索各种可扩展性解决方案。
有两种方法可以扩展区块链:
扩展L1区块链本身,方法包括增加区块大小或分片。即将区块链网络中的节点划分为几个相对独立的分片。
单个分片的处理规模较小,甚至只存储部分网络状态。但理论上,在多个分片并行处理交易的条件下,整个网络的吞吐量将得到提高。然而,这种方法会牺牲去中心化。
将L1网络上的交易转移到L2层,L2收集交易,然后将其发送到L1网络进行结算。这样,每批交易只需支付一次燃气费,而不是每笔交易都支付燃气费。
因此,所有交易均平均分担燃气费用,有效降低了每笔交易的成本。这样,L1成为L2上执行的所有交易的结算层。L2扩展解决方案可以解决L1的可扩展性问题,同时不牺牲去中心化和安全性。
当然,L2扩展解决方案也经历了从状态通道到Plasma再到Rollup的演变。目前,Rollup是最主流和潜力巨大的L2解决方案。
Rollup是指首先在链下进行复杂的计算和状态维护,然后通过使用更便宜的CALLDATA通过合约调用的方式将与状态变化相关的数据进行链上保存,通过将大量交易总结和打包为一笔交易,最终在保证数据可用性的前提下提高TPS。
Rollup解决方案的共同点是强调链上数据的可用性。也就是说,任何人都可以根据链上保存的数据恢复全局状态,从而消除由数据可用性问题引起的安全风险。
除了压缩链上计算量之外,零知识证明发挥作用的另一个方面在于确保数据的正确性。
ZK Rollup解决方案始于2018年下半年。这种解决方案的关键在于ZK。每个ZK Rollup解决方案的状态变化都需要由主链上的合约提供和验证零知识证明。
只有通过验证才能改变状态。也就是说,ZK Rollup的状态变化严格依赖于加密证明。(注:有关ZK Rollup原理的详细解释,请参考李华的《关于分层和跨链方法的清晰视角》)
当然,还有其他的Rollup解决方案,例如在2019年下半年形成的乐观Rollup。它不需要对每个状态变化进行严格的验证。
它首先乐观地假设每次变化都是正确的,然后在一定时间限制内对变化进行挑战。如果挑战成功,就证明之前的提交存在问题,提交者将受到惩罚,状态将被回滚。
也就是说,乐观Rollup的状态变化依赖于经济激励和博弈。
ZK Rollup的突出问题是难以实现可编程性,但这两年的技术发展似乎要突破这个瓶颈,zkEVM的实现可以实现可编程性;乐观Rollup最关注的问题似乎是当资金从Layer 2返回时,由于挑战期的延迟问题,但中介机构可提供预付服务。
因此,乐观Rollup解决方案的实施速度更快。但 zkEVM 可能更加具有潜力。
零知识证明的新星解决方案
在早期的零知识证明项目中,尽管Zcash和Monero在隐私保护方面表现出色,但它们只能作为价值存储的手段,难以与其他应用程序合作。
正如前文所述,在许多开发人员的努力下,零知识证明已经可以用于通用计算,并与智能合约相结合,以探索零知识证明技术的更大潜力。下面主要介绍今年上线的两个项目。
Aleo项目于2019年正式成立,其成员包括来自Google、Amazon、Facebook等公司以及UC Berkeley、Johns Hopkins、NYU、Cornell等研究型大学的世界级密码学家、工程师、设计师和运营人员。
Aleo构建了zkCloud系统,用于保护身份和交易,而受保护的身份可以直接相互交互(例如资产转移)或通过智能合约进行编程。在典型的公共区块链中,程序在由每个网络节点运行的全局“虚拟机”(VM)上执行。因此,网络上的每个节点都必须重新计算(并共同批准)给定程序的每一步,这是低效的,降低了速度,并增加了用户的成本。zkCloud通过将应用程序的运行与区块链的状态维护(链上+链下)分离,并结合递归的零知识证明,解决了这些限制,使Aleo能够实现完整的可编程性和隐私保护,并具有更高的交易吞吐量。
Aleo构建了一种名为Leo的编程语言,这种语言对于零知识证明应用程序开发人员来说更加友好,为他们提供了更好的环境。Leo是一种受Rust启发的静态类型编程语言,专为编写私密应用程序而设计。
目前,Aleo网络已经经过了三轮测试,目前正在积极引导生态的发展,通过积分激励社区参与生态应用建设。
Aleo是一条公链,其 Prover 是通过零知识证明参与网络建设,在前期的 Test3 中,有大约40多万张显卡参与测试,作为一个测试网,这是非常大的规模了。Aleo原计划今年三季度上线,按照目前的情况,预估可能在三季度末,或四季度上线。可持续关注。
Scroll Tech旨在构建一个与以太坊兼容的zk-Rollup,并建立一个强大的证明网络。经过数月的探索,他们取得了重大的技术进展。
Scroll的目标包括:
构建完全与EVM兼容的zk-Rollup。通过验证EVM执行过程中每个操作码的一致性和完整性,支持对以太坊区块的直接验证。这样,L1智能合约可以无缝迁移到Scroll上,而无需进行任何修改。
实现和标准化二层证明外包。Scroll设计了一个强大的外包机制,可以激励验证者为他们生成零知识证明。Scroll团队计划将此方案标准化,以适应更广泛的离链计算领域。这将开启一个新的证明市场。开发者可以在Scroll中部署复杂的合约,无需考虑Gas限制。许多新的应用可以通过离链方式实现,并将证明提交到链上。为此,团队还构建了全球最快的GPU和ASIC证明器。长期目标是实现完全去中心化,并减少MEV的影响。
升级到一种新的证明系统。Scroll计划采用一种新的分层零知识证明系统。第一层是高效的证明生成层,具备自定义电路优化和硬件高效证明算法。第二层是高效的验证层,具备简洁的证明和与EVM兼容的验证算法。相较于现有解决方案,该系统有潜力支持比EVM更大的程序和更多的功能,例如隐私保护。
Scroll Tech的这些进展在zk-Rollup和二层扩展解决方案领域具有重要意义,展示了他们在兼容性、效率和去中心化方面的承诺。
Scroll 在其Alpha测试中,已经接入了大量的应用,实现了其EVM应用程序可以直接移植到Scroll的承诺。预计 Scroll 主网在3个月内上线。Scroll 主网上线后,将进一步实现去中心化的 Prover网络,这样给予大家更多的参与机会。